=r)return[];if(e>n.outerEnd){R.skipped+=n.outerEnd-(m||0),m=n.outerEnd;continue}if(t!==m&&m!=n.outerStart&&(R.skipped+=n.outerStart-m),R.skipped>R.skip)return[];for(t===m&&e>0&&n.start>0&&(R.skipped=n.outerStart),o=a;;){if(this._findGroupedRange(n.data,k,R,null,i),v=S._calculateGroupsTotal(k,!0,"currentItems"),v>=R.take)return k;if(S._fetchingGroupItems)return[];if(o++,!b[o]||b[o].outerStart!==n.outerEnd)break;n=b[o]}}else if(e>=n[G]&&e<=n[F]){for(c=0,o=a;o=n.start&&(g=n.data,d=n.end,P||(w.inPlaceSort?h=S._queryProcess(n.data,{filter:S.filter()}):(y=_(S.group()||[]).concat(s(S.sort()||[])),h=S._queryProcess(n.data,{sort:y,filter:S.filter()})),f=g=h.data,h.total!==t&&(d=h.total)),u=0,e+c>n.start&&(u=e+c-n.start),l=f.length,d>r&&(l-=d-r),c+=l-u,k=S._mergeGroups(k,g,u,l),r<=n.end&&c==r-e))return k;break}m=n.outerEnd}return[]},_getRangesMismatch:function(e){for(var t,r=this,i=r._ranges,n=0,a=0;;){if(t=i[a],!t||t.outerStart>e)break;t.outerEnd!=t.end&&(n=t.outerEnd-t.end),a++}return n},_mergeGroups:function(e,t,r,i){if(this._isServerGrouped()){var n,a=t.toJSON();return e.length&&(n=e[e.length-1]),q(n,a,r,i),e.concat(a)}return e.concat(t.slice(r,i))},_processRangeData:function(e,r,i,n,a,s){var o,u,l,g,d=this;d._pending=t,d._skip=r>d.skip()&&!d._omitPrefetch?Ve.min(a,(d.totalPages()-1)*d.take()):n,d._currentRangeStart=r,d._take=i,o=d.options.serverPaging,u=d.options.serverSorting,l=d.options.serverFiltering,g=d.options.serverAggregates;try{d.options.serverPaging=!0,d._isServerGrouped()||d.group()&&d.group().length||(d.options.serverSorting=!0),d.options.serverFiltering=!0,d.options.serverPaging=!0,d.options.serverAggregates=!0,o&&(d._detachObservableParents(),d._data=e=d._observe(e)),d._process(e,s)}finally{d.options.serverPaging=o,d.options.serverSorting=u,d.options.serverFiltering=l,d.options.serverAggregates=g}},skip:function(){var e=this;return e._skip===t?e._page!==t?(e._page-1)*(e.take()||1):t:e._skip},currentRangeStart:function(){return this._currentRangeStart||0},take:function(){return this._take||this._pageSize},_prefetchSuccessHandler:function(e,t,r,i){var n=this,a=n._timeStamp();return function(s){var o,u,l,g=!1,d={start:e,end:t,data:[],timestamp:n._timeStamp()};if(n._dequeueRequest(),n.trigger(je,{response:s,type:"read"}),s=n.reader.parse(s),l=n._readData(s),l.length){for(o=0,u=n._ranges.length;o=n._currentRequestTimeStamp||!n._skipRequestsInProgress)&&(r&&l.length?r():n.trigger(Ie,{}))}},prefetch:function(e,r,i){var n=this,a=Ve.min(e+r,n.total()),s={take:r,skip:e,page:e/r+1,pageSize:r,sort:n._sort,filter:n._filter,group:n._group,aggregate:n._aggregate};return n._isGroupPaged()&&!n._isServerGrouped()&&n._groupRangeExists(e,a)?(i&&i(),t):(n._isServerGroupPaged()&&!n._groupRangeExists(e,a)||!n._rangeExists(e,a)?(clearTimeout(n._timeout),n._timeout=setTimeout(function(){n._queueRequest(s,function(){n.trigger(Me,{type:"read"})?n._dequeueRequest():(n._omitPrefetch&&n.trigger(Le),n.transport.read({data:n._params(s),success:n._prefetchSuccessHandler(e,a,i),error:function(){var e=Ye.call(arguments);n.error.apply(n,e)}}))})},100)):i&&i(),t)},_multiplePrefetch:function(e,t,r){var i=this,n=Ve.min(e+t,i.total()),a={take:t,skip:e,page:e/t+1,pageSize:t,sort:i._sort,filter:i._filter,group:i._group,aggregate:i._aggregate};i._rangeExists(e,n)?r&&r():i.trigger(Me,{type:"read"})||i.transport.read({data:i._params(a),success:i._prefetchSuccessHandler(e,n,r,!0)})},_adjustPageSkip:function(e,t){var r,i,n=this,a=n._getPrevRange(e),s=n.total();if(a){if(i=n._getRangesMismatch(e),!i)return e;e-=i}if(r=Ve.max(Ve.floor(e/t),0)*t,r>s)for(;;)if(r-=t,r=e)return n[t]},_getPrevRange:function(e){var t,r,i=this,n=i._ranges,a=n.length;for(t=a-1;t>=0;t--)if(n[t].outerStart<=e){r=n[t];break}return r},_rangeExists:function(e,t){var r,i,n=this,a=n._ranges;for(r=0,i=a.length;r=t)return!0;return!1},_groupRangeExists:function(e,t){var r,i,n,a=this,s=a._ranges,o=0,u=a.groupsTotal(!0);for(t>u&&!a._isServerGrouped()&&(t=u),r=0,i=s.length;r=e?o+=n.outerEnd-e:n.outerStart<=t&&n.outerEnd>=t&&(o+=t-n.outerStart);return o>=t-e},_getCurrentRangeSpan:function(){var e,t,r=this,i=r._ranges,n=r.currentRangeStart(),a=n+(r.take()||0),s=[],o=i.length;for(t=0;t=n||e.start>=n&&e.start<=a)&&s.push(e);return s},_removeModelFromRanges:function(e){var t,r,i,n=this;for(r=0,i=this._ranges.length;r=e){n._getByUid(t.uid,r.data)||(n._isServerGrouped()?r.data.splice(e,0,n._wrapInEmptyGroup(t)):r.data.splice(e,0,t));break}n._updateRangesLength()},_updateRangesLength:function(){var e,t,r,i=this,n=i._ranges||[],a=n.length,s=!1,o=0,u=0;for(r=0;r0?this.filter(this._hierarchicalFilter):(this.options.filter=this._hierarchicalFilter,this._filter=l(this.options.filter),this._hierarchicalFilter=null)),t},remove:function(e){var t,r=e.parentNode(),i=this;return r&&r._initChildren&&(i=r.children),t=le.fn.remove.call(i,e),r&&!i.data().length&&(r.hasChildren=!1),t},success:V("success"),data:V("data"),insert:function(e,t){var r=this.parent();return r&&r._initChildren&&(r.hasChildren=!0,r._initChildren()),le.fn.insert.call(this,e,t)},filter:function(e){return e===t?this._filter:(!this.options.serverFiltering&&this._markHierarchicalQuery(e)&&(e={logic:"or",filters:[e,{field:"_matchFilter",operator:"equals",value:!0}]}),this.trigger("reset"),this._query({filter:e,page:1}),t)},_markHierarchicalQuery:function(t){var r,i,n,s,o,u=this.options.accentFoldingFiltering;return t=u?e.extend({},l(t),{accentFoldingFiltering:u}):l(t),t&&0!==t.filters.length?(r=a.filterExpr(t),n=r.fields,s=r.operators,i=o=Function("d, __f, __o","return "+r.expression),(n.length||s.length)&&(o=function(e){return i(e,n,s)}),this._updateHierarchicalFilter(o),!0):(this._updateHierarchicalFilter(function(){return!0}),!1)},_updateHierarchicalFilter:function(e){var t,r,i=this._data,n=!1;for(r=0;r=this.total()?(this.trigger("endreached",{index:e}),null):this.useRanges?this.useRanges?((e=this.skip+r)&&(i=this.range(Math.floor(e/r)*r)),e===this.prefetchThreshold&&this._prefetch(),e===this.midPageThreshold?this.range(this.nextMidRange,!0):e===this.nextPageThreshold?this.range(this.nextFullRange):e===this.pullBackThreshold&&this.range(this.offset===this.skip?this.previousMidRange:this.previousFullRange),i?this.dataSource.at(e-this.dataOffset):(this.trigger("endreached",{index:e}),null)):t:this.dataSource.view()[e]},indexOf:function(e){return this.dataSource.data().indexOf(e)+this.dataOffset},total:function(){return parseInt(this.dataSource.total(),10)},next:function(){var e=this,t=e.pageSize,r=e.skip-e.viewSize+t,i=Ve.max(Ve.floor(r/t),0)*t;this.offset=r,this.dataSource.prefetch(i,t,function(){e._goToRange(r,!0)})},range:function(e,t){if(this.offset===e)return!0;var r=this,i=this.pageSize,n=Ve.max(Ve.floor(e/i),0)*i,a=this.dataSource;return t&&(n+=i),a.inRange(e,i)?(this.offset=e,this._recalculate(),this._goToRange(e),!0):!this.prefetch||(a.prefetch(n,i,function(){r.offset=e,r._recalculate(),r._goToRange(e,!0)}),!1)},syncDataSource:function(){var e=this.offset;this.offset=null,this.range(e)},destroy:function(){this.unbind()},_prefetch:function(){var e=this,t=this.pageSize,r=this.skip+t,i=this.dataSource;i.inRange(r,t)||this._prefetching||!this.prefetch||(this._prefetching=!0,this.trigger("prefetching",{skip:r,take:t}),i.prefetch(r,t,function(){e._prefetching=!1,e.trigger("prefetched",{skip:r,take:t})}))},_goToRange:function(e,t){this.offset===e&&(this.dataOffset=e,this._expanding=t,this.dataSource.range(e,this.pageSize),this.dataSource.enableRequestsInProgress())},_reset:function(){this._syncPending=!0},_change:function(){var e=this.dataSource;this.length=this.useRanges?e.lastRange().end:e.view().length,this._syncPending&&(this._syncWithDataSource(),this._recalculate(),this._syncPending=!1,this.trigger("reset",{offset:this.offset})),this.trigger("resize"),this._expanding&&this.trigger("expand"),delete this._expanding},_syncWithDataSource:function(){var e=this.dataSource;this._firstItemUid=e.firstItemUid(),this.dataOffset=this.offset=e.skip()||0,this.pageSize=e.pageSize(),this.useRanges=e.options.serverPaging},_recalculate:function(){var e=this.pageSize,t=this.offset,r=this.viewSize,i=Math.ceil(t/e)*e;this.skip=i,this.midPageThreshold=i+e-1,this.nextPageThreshold=i+r-1,this.prefetchThreshold=i+Math.floor(e/3*2),this.pullBackThreshold=this.offset-1,this.nextMidRange=i+e-r,this.nextFullRange=i,this.previousMidRange=t-r,this.previousFullRange=i-e}}),ce=Pe.Observable.extend({init:function(e,t){var r=this;Pe.Observable.fn.init.call(r),this.dataSource=e,this.batchSize=t,this._total=0,this.buffer=new fe(e,3*t),this.buffer.bind({endreached:function(e){r.trigger("endreached",{index:e.index})},prefetching:function(e){r.trigger("prefetching",{skip:e.skip,take:e.take})},prefetched:function(e){r.trigger("prefetched",{skip:e.skip,take:e.take})},reset:function(){r._total=0,r.trigger("reset")},resize:function(){r._total=Math.ceil(this.length/r.batchSize),r.trigger("resize",{total:r.total(),offset:this.offset})}})},syncDataSource:function(){this.buffer.syncDataSource()},at:function(e){var t,r,i=this.buffer,n=e*this.batchSize,a=this.batchSize,s=[];for(i.offset>n&&i.at(i.offset-1),r=0;r